package com.mryang.hds.mapper;

import com.mryang.hds.entity.Need;
import com.mryang.hds.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;

import java.util.List;

/**
 * @author Genius
 * @version 1.0.0
 * @ClassName NeedMapper.java
 * @Description TODO
 * @createTime 2023年03月20日 12:29:00
 */

@Mapper
public interface NeedMapper {

    List<Need> getNeedData(@Param("status") Integer status, @Param("userId") Integer userId);

    int needSub(@Param("need") Need need);

    List<Need> needSearch(@Param("title") String title,
                          @Param("status") Integer status,
                          @Param("start") String start,
                          @Param("end") String end,
                          @Param("tokenuser") User tokenuser);

    void needDataStateUpd(@Param("needState") Integer needState, @Param("needId") Integer needId);

    Need getNeedByneedId(@Param("needId") Integer needId);

    void needDataUpd(@Param("need") Need need, @Param("needByneedId") Need needByneedId);

    /**
     * 根据用户编号和需求状态查询数据条数
     * @param userId 用户编号
     * @param needState 需求状态
     * @return 满足条件的数据条数
     */
    Integer getNeedCountById(@Param("userId") Integer userId,
                         @Param("needState") Integer needState);

    /**
     * 根据用户ID获取其所有需求信息
     * @param uid 用户编号
     * @return 需求集合
     */
    List<Need> getNeedsByUId(@Param("uid") Integer uid);

    /**
     * 修改需求状态
     * @param needId
     */
    void editNeedState(@Param("needId") Integer needId,@Param("needState") Integer needState);

    /**
     *
     * @param loginId
     * @return
     */
    /**
     * 医护人员 所管理的 用户的 数量
     * @param loginId 医护人员ID
     * @param needState 需求状态
     * @return 满足要求的数据量
     */
    Integer getNeedCountByIdAndDocId(@Param("loginId") Integer loginId,
                                     @Param("needState") Integer needState);

    /**
     * 获取距离现在时间最近的一条记录
     * @param loginId 用户编号
     * @return 需求信息
     */
    Need getOneNeedByUId(@Param("loginId") Integer loginId);


    // 删除用户所对应的数据
    void delNeedByUId(@Param("userId") Integer userId);

    // 根据需求编号删除需求信息
    void deleteNeed(@Param("needId") Integer needId);
}
